package io.esirong

import android.content.Context
import android.content.Intent
import android.net.Uri
import android.os.Looper
import android.os.Process
import android.text.TextUtils
import java.io.BufferedReader
import java.io.File
import java.io.FileReader


/**
 * 默认的工具类
 * <P>将暂时不能分类的静态工具方法存放在这里。直到可以确认分类再作移动安排。
 * Created by 黄嵘才(HuangRc) on 2019/9/23.
 */

/** Returns `true` if called on the main thread（UI Thread), `false` otherwise.  */
fun isOnMainThread(): Boolean {
    return Looper.myLooper() == Looper.getMainLooper()
}

/** Returns `true` if called on a background thread, `false` otherwise.  */
fun isOnBackgroundThread(): Boolean {
    return !isOnMainThread()
}

/**
 * 获取当前进程的名称
 */
fun getProcessName(): String? {
    var mBufferedReader: BufferedReader? = null
    try {
        val file = File("/proc/" + Process.myPid() + "/" + "cmdline")
        mBufferedReader = BufferedReader(FileReader(file))
        return mBufferedReader.readLine()
    } catch (e: Exception) {
        e.printStackTrace()
        return null
    } finally {
        mBufferedReader?.close()
    }

}

/**
 * 判断是不是应用的进程（通过包名的匹配来判断，用来于区分多进程服务的）
 *
 * @param context 本应用进程的上下文 [Context]
 * @return true 是应用的进程
 */
fun isMainProcess(context: Context): Boolean {
    //判断进程名，保证只有主进程运行
    return !TextUtils.isEmpty(getProcessName()) && getProcessName() == context.packageName

}

/**
 * 打开拔号盘打电话
 *
 * @param context     [Context]
 * @param phoneNumber 电话号码
 */
fun dialPhone(context: Context, phoneNumber: String) {
    val intent = Intent(Intent.ACTION_DIAL, Uri.parse("tel:$phoneNumber"))
    intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
    context.startActivity(intent)
}

